void main() {
  var sList = ['a', 'b', 'c'];
  List<String> newList = handleString(sList, doubleStr);

  //handleString中的函数参数，可以直接传入匿名函数
  List<String> newList2 = handleString(sList, (str) {
    return str * 3;
  });

  for (var i = 0; i < newList2.length; i++) {
    print(newList[i]);
  }
}

//定义一个方法 参数列表有函数变量（该函数参数接收一个参数返回String）
List<String> handleString(List<String> strList, String handler(str)) {
  //将List中每个元素交给handler方法处理
  for (var i = 0; i < strList.length; i++) {
    strList[i] = handler(strList[i]);
  }

  return strList;
}

//定义handleString 接收的函数类型,字符串双倍输出
String doubleStr(str) {
  return str * 2;
}
